package modelo.fabricas;

import modelo.edificios.EdificioComercial;
import modelo.edificios.EdificioIndustrial;
import modelo.edificios.EdificioResidencial;
import modelo.excepciones.YaHayUnaConstruccionTerrestreEnLaUbicacionDeseadaException;
import modelo.mapa.Mapa;
import modelo.mapa.Ubicacion;

public class FabricaDeEdificio{

    public EdificioComercial crearEdificioComercial(Ubicacion unaUbicacion) 
    {
        if(Mapa.getInstance().obtenerHectareaSegunUbicacion(unaUbicacion).obtenerConstruccionTerrestre() == null )
        {               
            EdificioComercial edificioComercial = new EdificioComercial();
            Mapa.getInstance().obtenerHectareaSegunUbicacion(unaUbicacion).construccionTerrestre(edificioComercial);//aca se contruye en la hectarea
            edificioComercial.asignarUbicacion(unaUbicacion);
            return  edificioComercial;
        }
        else
        {
            throw new YaHayUnaConstruccionTerrestreEnLaUbicacionDeseadaException();
        }
    }
    
    public EdificioIndustrial crearEdificioIndustrial(Ubicacion unaUbicacion) 
    {
        if(Mapa.getInstance().obtenerHectareaSegunUbicacion(unaUbicacion).obtenerConstruccionTerrestre() == null )
        {               
            EdificioIndustrial edificioIndustrial = new EdificioIndustrial();
            Mapa.getInstance().obtenerHectareaSegunUbicacion(unaUbicacion).construccionTerrestre(edificioIndustrial);//aca se contruye en la hectarea
            edificioIndustrial.asignarUbicacion(unaUbicacion);
            return  edificioIndustrial;
        }
        else
        {
            throw new YaHayUnaConstruccionTerrestreEnLaUbicacionDeseadaException();
        }
    }
    
    public EdificioResidencial crearEdificioResidencial(Ubicacion unaUbicacion) 
    {
        if(Mapa.getInstance().obtenerHectareaSegunUbicacion(unaUbicacion).obtenerConstruccionTerrestre() == null )
        {               
            EdificioResidencial edificioResidencial = new EdificioResidencial();
            Mapa.getInstance().obtenerHectareaSegunUbicacion(unaUbicacion).construccionTerrestre(edificioResidencial);//aca se contruye en la hectarea
            edificioResidencial.asignarUbicacion(unaUbicacion);
            return  edificioResidencial;
        }
        else
        {
            throw new YaHayUnaConstruccionTerrestreEnLaUbicacionDeseadaException();
        }
    }
}